home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SMEGUPD1.ZIP / SMEG03.ZIP / GENDEMO.ASM next >
Assembly Source File  |  1994-06-17  |  3KB  |  159 lines

  1.     EXTRN    POLYMORPH : NEAR
  2.     EXTRN    ENCRYPT     : NEAR
  3.     EXTRN    JUNK_GEN     : NEAR
  4.  
  5. SMEGSIZE    EQU    2016
  6.  
  7. CODESG    SEGMENT    BYTE PUBLIC
  8.  
  9.     ASSUME    CS:CODESG,DS:CODESG,ES:CODESG,SS:CODESG
  10.  
  11.     ORG    100h
  12.  
  13. BEGIN:    JMP    MAIN
  14.  
  15. F_NAME:    DB    '0000.COM',0
  16.  
  17. SELECT_MES:    DB    'SMEG v0.3.  Generation Difference Demonstration'
  18.     DB    13,10,9
  19.     DB    '   (C) The Black Baron 1994',13,10,10,10
  20.     DB    'SELECT THE NUMBER OF GENERATIONS:',13,10,10
  21.     DB    '1  --  10     Generations',13,10
  22.     DB    '2  --  100        ""',13,10
  23.     DB    '3  --  1000       ""',13,10
  24.     DB    '4  --  10000      ""        (Large HD`s Only!!)$'
  25. MES1:    DB    ' 10 $'
  26. MES2:    DB    ' 100 $'
  27. MES3:    DB    ' 1000 $'
  28. MES4:    DB    ' 10000 $'
  29. GEN_MES:    DB    13,10,10,10
  30.     DB    'Generating$'
  31. WAIT_MES:    DB    'Executable .COM Generations, Please Wait...$'
  32. DONE:    DB    13,10,10
  33.     DB    'DONE!  Now examine each, and note how different they are!'
  34.     DB    13,10,10,7,'$'
  35. ERROR:    DB    13,10,10
  36.     DB    'SORRY!  A disk error has occurred!'
  37.     DB    13,10,10,7,'$'
  38.  
  39. NUM_TABLE:    DW    10,MES1,100,MES2,1000,MES3,10000,MES4
  40.  
  41. MAIN:    MOV    AX,3
  42.     INT    10h
  43.  
  44.     MOV    DX,OFFSET SELECT_MES
  45.     MOV    AH,9
  46.     INT    21h
  47.  
  48. GET_CHOICE:    MOV    AX,0C07h
  49.     INT    21h
  50.     CMP    AL,'1'
  51.     JB    GET_CHOICE
  52.     CMP    AL,'4'
  53.     JA    GET_CHOICE
  54.  
  55.     SUB    AL,'1';
  56.     XOR    AH,AH
  57.     ADD    AX,AX
  58.     ADD    AX,AX
  59.     ADD    AX,OFFSET NUM_TABLE
  60.     XCHG    BX,AX
  61.  
  62.     PUSH    BX
  63.     MOV    DX,OFFSET GEN_MES
  64.     MOV    AH,9
  65.     INT    21h
  66.  
  67.     POP    BX
  68.     MOV    CX,[BX]
  69.     PUSH    CX
  70.     MOV    DX,[BX+2]
  71.     INT    21h
  72.  
  73.     MOV    DX,OFFSET WAIT_MES
  74.     INT    21h
  75.  
  76.     POP    CX
  77. GEN_PROGS:    PUSH    CX
  78.     MOV    BP,OFFSET THE_END + SMEGSIZE
  79.     MOV    DI,OFFSET THE_END + SMEGSIZE + 45
  80.     MOV    DX,OFFSET DEMO
  81.     MOV    CX,DEMO_SIZE
  82.     MOV    AX,100h
  83.     CALL    POLYMORPH
  84.     MOV    AH,5Bh
  85.     MOV    DX,OFFSET F_NAME
  86.     XOR    CX,CX
  87.     INT    21h
  88.     JNC    CREATED_OK
  89. CLOSE_ERROR:    CALL    DISP_ERROR
  90. ERROR_END:    POP    CX
  91.     MOV    AX,04CFFh
  92.     INT    21h
  93.  
  94. CREATED_OK:    XCHG    AX,BX
  95.     MOV    AH,40h
  96.     MOV    CX,[BP+39]
  97.     MOV    DX,OFFSET THE_END + SMEGSIZE + 45
  98.     INT    21h
  99.     JNC    WROTE_POLY_OK
  100. CLOSE_IT:    CALL    DISP_ERROR
  101.     MOV    AH,3Eh
  102.     INT    21h
  103.     JMP    ERROR_END
  104.  
  105. WROTE_POLY_OK:    CALL    ENCRYPT
  106.     MOV    AH,40h
  107.     MOV    CX,[BP]
  108.     MOV    DX,OFFSET THE_END + SMEGSIZE + 45
  109.     INT    21h
  110.     JC    CLOSE_IT
  111.     CALL    JUNK_GEN
  112.     MOV    AH,40h
  113.     INT    21h
  114.     JC    CLOSE_IT
  115.     MOV    AH,3Eh
  116.     INT    21h
  117.     JC    CLOSE_ERROR
  118.  
  119.     MOV    BX,OFFSET F_NAME + 3
  120.     MOV    CX,4
  121. UP_NUMBER:    INC    BYTE PTR [BX]
  122.     CMP    BYTE PTR [BX],'9'+1
  123.     JB    NUM_OK
  124.     SUB    BYTE PTR [BX],10
  125.     DEC    BX
  126.     LOOP    UP_NUMBER
  127.  
  128. NUM_OK:    POP    CX
  129.     LOOP    GEN_PROGS
  130.  
  131.     MOV    DX,OFFSET DONE
  132.     MOV    AH,9
  133.     INT    21h
  134.  
  135.     MOV    AX,4C00h
  136.     INT    21h
  137.  
  138. DISP_ERROR:    MOV    DX,OFFSET ERROR
  139.     MOV    AH,9
  140.     INT    21h
  141.     RET
  142.  
  143. DEMO:    CALL    SKIP_MESSAGE
  144.     DB    13,10,'This was decrypted with a SMEG v0.3 generated decryptor!'
  145.     DB    13,10,'$'
  146. SKIP_MESSAGE:    POP    DX
  147.     MOV    AH,9
  148.     INT    21h
  149.     MOV    AX,4C00h
  150.     INT    21h
  151. DEMO_SIZE    EQU    $ - DEMO
  152. THE_END    EQU    $
  153.  
  154. CODESG    ENDS
  155.  
  156.     END    BEGIN
  157.  
  158.  
  159.